package cn.edu.wynu.d1_inner_class1;
/*
内部类：
是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块)，如果一个类定义在另一个类的内部，这个类就是内部类。
场景:当一个类的内部，包含了一个完整的事物，且这个事物没有必要单独设计时，就可以把这个事物设计成内部类。
public class car{
    // 内部类
    public class Engine{
    }
}
*/

/*
内部类有四种形式：
1、成员内部类[了解]
2、静态内部类[了解]
3、局部内部类[了解]
4、匿名内部类[重点]
*/

/*
成员内部类：
就是类中的一个普通成员，类似前面我们学过的普通的成员变量、成员方法。
public class Outer{
    // 成员内部类
    public class Inner{

    }
}
注意:JDK16之前，成员内部类中不能定义静态成员，JDK16开始也可以定义静态成员了

创建对象的格式:
外部类名.内部类名 对象名 = new 外部类(...).new 内部类(...);
Outer.Inner in= new Outer().new Inner();

成员内部类中访问其他成员的特点:
1、和前面学过的实例方法一样，成员内部类的实例方法中，同样可以直接访问外部类的实例成员、静态成员。
2、可以在成员内部类的实例方法中，拿到当前外部类对象，格式是:外部类名.this。
*/

public class Test {
    public static void main(String[] args) {
        // 了解成员内部类及其特点
        Outer.Inner in = new Outer().new Inner();
        in.test();
    }
}